import {
  getCartGoodsTotal
} from 'api/cartApi'

// 订单API
import {
  alterOrderStatus,
  payment
} from 'api/orderApi'

import {
  getshoppingdirectorylist
} from 'api/customerServiceApi'
import {
  // 提交用户触发的事件
  submitUserEvent,
} from 'api/mainApi.js'

//app.js 整个小程序只有一个app实例，是全部页面共享的
App({
  // 菜单胶囊的位置
  menuCapsulePosition: wx.getMenuButtonBoundingClientRect(),
  // 窗口可用高度和宽度
  availableWindow: {},
  // 登录成功后服务端响应令牌
  token: '',
  version: '',
  //商品详细信息的购物指南列表
  shoppingdirectorylist: [],
  // 小程序启动后，会触发此函数
  onLaunch: function () {
    console.log("app.js的onLaunch执行了");
    this.initialToken() // 初始化token
    this.initialavailableWindow() // 初始化屏高度、宽度
    if (this.token) {
      // 向服务端发送请求，提交本次触发的事件，用于统计小程序的打开次数
      submitUserEvent({
        event: 1
      }, this.token)
    }
  },
  onShow: function () {
    console.log("app.js中的onShow执行了");
    console.log(this.availableWindow);
    console.log(this.menuCapsulePosition);
    //如果购物指南列表不存在,请求购物指南列表
    // if (this.shoppingdirectorylist.length===0) {
    this.initshoppingdirectorylist()
    // }

  },
  /**
   * 初始化购物指南列表
   */
  initshoppingdirectorylist() {
    let ref=this
    getshoppingdirectorylist()
      .then(res => {
        console.log("===+++++++++++++++++++获取购物指南成功:", res);
        //设置购物指南列表
        ref.shoppingdirectorylist = res.data.list
      })
      .catch(err => {
        console.log("获取购物指南失败:", err);
      })
  },
  // 初始化token
  initialToken: function () {
    // 从本地缓存取出token
    this.token = wx.getStorageSync('auth_token')
  },
  //删除App的token
  deleteToken: function () {
    this.token = ''
  },
  // 初始化 当前设备屏幕可用高度、宽度
  initialavailableWindow: function () {
    wx.getSystemInfo({
      success: (result) => {
        this.availableWindow['height'] = result.windowHeight
        this.availableWindow['width'] = result.windowWidth
        this.version = result.SDKVersion

        console.log("小程序版本-------", this.version);
      },
    })
  },



  /**
   * 初始化购物车 tabbar右上角徽标数量
   */
  initialCartTabBarBadge: function () {
    if (this.token) {
      getCartGoodsTotal().then(data => {
        console.log("初始化后的购物车徽标:", data);
        if (data.total) {
          wx.setTabBarBadge({
            index: 1,
            text: data.total + ''
          })
        } else {
          wx.removeTabBarBadge({
            index: 1
          })
        }
      })
    } else {
      wx.removeTabBarBadge({
        index: 1
      })
    }
  },

  /**
   * 订单支付：该函数会返回Promise对象。支付完成（无论成功或失败）后可以在then中进行处理
   * 可根据该回调函数的参数进行判断是否支付成功
   *  res.errMsg：requestPayment:fail cancel 取消支付
   *  res.errMsg：requestPayment:ok  支付成功
   * 获取支付所需参数时出现错误时可以在catch中进行处理
   * @param {String} body 商品描述格式：商水超市-精品蔬菜 
   * @param {Number} totalFee 商品价格 单位为人民币/分  
   */
  orderPayment: function (body, totalFee) {
    return new Promise((reslove, reject) => {
      // 请求统一下单接口，为支付做准备
      payment(body, totalFee).then(res => {
        console.log("请求统一下单接口响应数据：", res);
        wx.requestPayment({
          nonceStr: res.data.nonceStr, // 随机字符串
          package: res.data.package, // 支付perpay_id
          paySign: res.data.paySign, // 支付签名
          timeStamp: res.data.timeStamp, // 时间戳
          signType: "MD5", // 签名加密类型
          success(res) { // 支付成功后的回调
            console.log("支付成功：", res);
          },
          fail(res) {
            console.log("支付失败：", res);
          },
          // 支付接口调用后，无论成功或者失败都会执行该回调函数，
          complete(res) {
            console.log("支付完成：", res);
            reslove(res)
          }
        })
      }).catch(err => {
        console.log("请求统一下单接口出现错误：", err);
        reject(err)
      })
    })

  }

})